union mval
{
    int data_switch;
    int data_val_i;
    double data_val_f;
};

struct stmdata
{
    int data_key;       // 数据编号
    char data_name[50]; // 数据名称
    int data_type;      // 数据类型
    union mval val;
};

struct moddata
{
    int data_key;       // 数据编号
    char data_name[50]; // 数据名称
    char data_addr[50]; // 设备地址
    int data_type;      // 数据类型
    union mval val;
};

struct STM32
{
    struct stmdata data[14];
};

struct Modbus
{
    struct moddata data[6];
};

// 共享内存结构体
struct CJSON
{
    char version[50];  // 版本
    int report_type;   // 报告类型
    int report_period; // 报告周期

    char mqtt_server_addr[50]; // mqtt服务器ip
    int mqtt_server_port;      // mqtt服务器端口号

    char mb_dev_addr[50]; // modbus端ip
    int mb_dev_port;      // modbus端口号

    // STM32
    struct STM32 stm32;

    // modbus
    struct Modbus modbus;
};

// 消息结构体
struct mtext
{
    int data_Humidifier;      // 加湿器阈值
    int data_Dehumidifier;    // 除湿器阈值
    int data_TemController;   // 控温仪器阈值
    int Tmp_Hign;             // 温度制冷阈值
    int Tmp_Low;              // 温度制热阈值
    int Hum;                  // 除湿阈值
    int mode;                 // 工作模式(除湿/控温)
    BOOL mode_aircondition;   // 空调开关状态
    BOOL state_Humidifier;    // 加湿器工作状态
    BOOL state_Dehumidifier;  // 除湿器工作状态
    BOOL state_TemController; // 控温仪器工作状态
};

// 消息队列结构体
struct msgQueue
{
    long key; // 对应点表中的key值
    struct mtext text;
};

// 查询历史记录结构体
struct Find_data
{ 
    char username[32];
    char password[32];
    char min[64];
    char max[64];
};

struct history_up
{
    int type;
    char time[32];
    char mode[32];
    char data_Vol[32];
    char data_Tmp[32];
    char data_Hum[32];
};

